package cn.iocoder.yudao.module.erp.service.dispatchvehicle;

import javax.validation.*;
import cn.iocoder.yudao.module.erp.controller.admin.dispatchvehicle.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.dispatchvehicle.DispatchVehicleDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import java.util.List;

/**
 * 总配车信息 Service 接口
 * @author 天使管理员
 */
public interface DispatchVehicleService {

    /**
     * 创建总配车信息
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDispatchVehicle(@Valid DispatchVehicleSaveReqVO createReqVO);

    /**
     * 获得ERP运输单列表
     * @param line,dp_id
     * @return
     */
    List<DispatchVehicleDO> dispatchVehicleList(Integer line,String dpId);

    /**
     * 更新总配车信息
     * @param updateReqVO 更新信息
     */
    void updateDispatchVehicle(@Valid DispatchVehicleSaveReqVO updateReqVO);

    /**
     * 删除总配车信息
     * @param id 编号
     */
    void deleteDispatchVehicle(Long id);

    /**
     * 获得总配车信息
     * @param id 编号
     * @return 东宁配车信息
     */
    DispatchVehicleDO getDispatchVehicle(Long id);

    /**
     * 获得总配车信息分页
     * @param pageReqVO 分页查询
     * @return 东宁配车信息分页
     */
    PageResult<DispatchVehicleDO> getDispatchVehiclePage(DispatchVehiclePageReqVO pageReqVO);

    /**
     * 分页获得所有配车出库列表
     * @param pageReqVO
     * @return
     */
    PageResult<DispatchVehicleDO> getDispatchVehicleOuterPage(DispatchVehiclePageReqVO pageReqVO);

    /**
     * 分页获得所有配车的运踪列表
     * @param pageReqVO
     * @return
     */
    PageResult<DispatchVehicleDO> getTransportPage(DispatchVehiclePageReqVO pageReqVO);

    /**
     * 批量修改各配车运踪线路详情
     * @param createReqVO
     */
    void lineDetailsUpdate(List<DispatchVehicleSaveReqVO> createReqVO);

}